定期ミートアップ 第12回 yhara
議題
たとえばRustでは他のファイルのstruct/enum/fn等を参照するには、ファイル冒頭にuseを書かないといけない
Rust以外でも、ファイル単位で名前空間が作られる言語は多い
というかほとんどそう?
Rubyのrequireはこういう仕組みになっていない
require "util" を一回やれば、そのあとはどのファイルでもutil.rbに書かれたclass/module/定数が参照できる
(ローカル変数はさすがにファイル単位なので参照できない)
関連機能
別名をつけられる
Haskell Python Scheme(R7RS small) Rust
衝突の回避
略称
特定の名前だけをインポートできる
Rust JavaScript(ESM)
メリット
衝突の回避
Rubyの場合は紳士協定で回避している
依存関係が明確になる
議論
Rubyのrequire
動的
メソッドとして定義されている
オープンクラス
一部をロードすることはできるか
require "active_support/core/hash" みたいな例はある